home *** CD-ROM | disk | FTP | other *** search
- * R E P 0 0
- procedure REPMAIN
- * Main controlling routine for reports
- private SWIDTH, BWIDTH, REPCOM, CGROUP, STARTD, FINISHD, OLDSCR
- public REPHD1, REPHD2, REPHD3, REPHD4, REPHD5
-
- store 8 to SWIDTH, BWIDTH
- store space(4) to CGROUP
- store blank(date()) to STARTD, FINISHD
- set deleted on
- @ 4,22 clear to 20,58
-
- do while .t.
- store "" to REPHD1,REPHD2, REPHD3, REPHD4, REPHD5
-
- GETOUT = .f.
- REPCOM = QBPROMPT("Current Work|List|Revenue|Quit|","Reports can be between two dates, and for a Customer type",1)
-
- do case
- case REPCOM=1 && Work in Progress
- do REPARAM with CGROUP, STARTD, FINISHD, "Work in Progress"
- if .not. GETOUT
- save screen to OLDSCR
- do REPWIP with CGROUP, STARTD, FINISHD
- restore screen from OLDSCR
- endif
- case REPCOM=2
- do REPARAM with CGROUP, STARTD, FINISHD, "List of Invoices"
- if .not. GETOUT
- save screen to OLDSCR
- do REPLIST with CGROUP, STARTD, FINISHD
- restore screen from OLDSCR
- endif
- case REPCOM=3
- do REPARAM with CGROUP, STARTD, FINISHD, "Invoice Revenue"
- if .not. GETOUT
- save screen to OLDSCR
- do REPREV with CGROUP, STARTD, FINISHD
- restore screen from OLDSCR
- endif
- case REPCOM=4 .or. REPCOM=0
- exit
- endcase
- close database
- enddo
- return
-
- ***********************************************************************
-
- procedure REPARAM
- parameters CGROUP, STARTD, FINISHD, RTITLE
- private M, RORDER
- M = "Choose Order for Report"
- do QBLAYOUT with RTITLE
- do QBBOX with 40
-
- CGROUP = blank(CGROUP)
- @ 5,26 say "Customer Group:" get CGROUP picture "!!!!" valid VCUSTTYP(5,42,.t.)
-
- if .not. "Progress"$RTITLE
- @ 7,27 say "Start date:"
- @ 9,26 say "Finish date:"
- do QB2DATES with "Group, Start & Finish dates - blank implies ALL",7,39,STARTD,9,39,FINISHD
- else
- do QBREAD with "Enter Customer Group - blank implies ALL"
- STARTD = blank(date())
- FINISHD = ctod("31/12/99")
- endif
- if .not. GETOUT
- CGROUP = MCUSTTYP
- if empty(CGROUP)
- RORDER = substr("DCQ",QBPROMPT("Date|Customer group|Quit|",M,1),1)
- REPHD3 = "Listing for ALL Customer Groups"
- else
- RORDER = "D"
- REPHD3 = "Listing for Customer Group "+trim(MCDESC)
- endif
- GETOUT = (QBRESP="Q")
- endif
- if GETOUT
- return
- endif
-
- REPHD1 = QBTITLE+space(10)+RTITLE+space(10)+QBDATE
- REPHD3 = center(trim(REPHD3)+" - Ordered by "+iif(RORDER="C","Group","Date"),79)
-
- select 0
- use INVOICE
- set softseek on
- do case
- case RORDER="D"
- set index to INVDATE
- seek dtos(STARTD) + trim(CGROUP)
- GETOUT = (eof()) .or. (INVOICE->DATEOUT>FINISHD)
- case RORDER="C"
- set index to INVCUST
- seek "! "+dtos(STARTD)
- if found()
- do while (.not. eof()) .and. (INVOICE->DATEOUT<STARTD)
- skip
- enddo
- GETOUT = (INVOICE->DATEOUT>FINISHD) .or. (eof())
- endif
- endcase
-
- if GETOUT
- do QBMESS with "No matching Invoices",COLFLASH,5
- else
- select 0
- use PARTS index PARTINV alias PARTS
- select INVOICE
- do QBPRCTL with " "
- endif
-
- return
-
- ***********************************************************************
-
- function REPMORE
- parameters STARTD, FINISHD
-
- RETVAL = (INVOICE->DATEOUT>=STARTD .and. INVOICE->DATEOUT<=FINISHD)
- RETVAL = RETVAL .and. (.not. (eof() .or. GETOUT))
-
- return RETVAL
-
- ***********************************************************************
-
- function REPGROUP
- parameters CGROUP
-
- RETVAL = (empty(CGROUP) .or. CGROUP=INVOICE->CUSTTYPE)
-
- return RETVAL
-
- ***********************************************************************
-
- procedure REPLIST
- * List of Invoice between two dates for a customer type
- parameters CGROUP, STARTD, FINISHD
- private M, LMARG
-
- LMARG = iif(PDEST="S","",space(5))
- do QBPUTH with 1,LMARG+REPHD1
- do QBPUTH with 3,LMARG+REPHD3
- M = LMARG + "Invoice Owner Name"+space(15)+"Vehicle Date in Date out"
- do QBPUTH with 5,M
- do QBPUTH with 6," "
- do while REPMORE(STARTD,FINISHD)
- * 99999 XXXXXXXXXXXXXXXXXXXXXXXX X999XXXX 99/99/99 99/99/99
- if REPGROUP(CGROUP)
- M = LMARG + " "
- M = M + str(INVOICE->INVNO,5)+" "+INVOICE->OWNNAME+" "
- M = M + INVOICE->REGNO+" "+dtoc(INVOICE->DATEIN)+" "
- M = M + dtoc(INVOICE->DATEOUT)
- do QBPUTL with 1,M
- endif
- skip
- enddo
-
- do QBPRCTL with [R:Finished "Invoice List"]
-
- return
-
- ***********************************************************************
-
- procedure REPREV
- * Revenue for Customer group between two dates
- parameters CGROUP, STARTD, FINISHD
- private TL, TP, TS, TV, TO, TI, TT
- store 0 to TL, TP, TS, TV, TO, TI, TT
- private M, LMARG
-
- LMARG = iif(PDEST="S","",space(5))
- do QBPUTH with 1,LMARG+REPHD1
- do QBPUTH with 3,LMARG+REPHD3
- if PDEST="S"
- SWIDTH = 6
- BWIDTH = 8
- M = "Invoice Date Labour Total Special V A T Contributions Total"
- else
- store 10 to SWIDTH, BWIDTH
- M = LMARG+"Invoice D a t e s Labour Total Special V A T Contributions Total"
- endif
- do QBPUTH with 5,M
- if PDEST="S"
- M = "Number Out Charge Parts Mater'l Owner Ins Co"
- else
- M = LMARG+"Number In Out Charge Parts Mater'l Owner Ins Co"
- endif
- do QBPUTH with 6,M
- do QBPUTH with 7," "
- * 99999 99/99/99 99/99/99 999999.99 999999.99 999999.99 999999.99 999999.99 999999.99 999999.99
- do while REPMORE(STARTD,FINISHD)
- if REPGROUP(CGROUP)
- INVFILL(.f.)
- do INVTOTAL with .f.
- M = LMARG+str(MINVNO,5)+iif(PDEST="S",""," "+dtoc(MDATEIN))+" "+dtoc(MDATEOUT)
- M = M + str(MLABOURT,10,2)+str(MINSPART+MOWNPART,10,2)
- M = M + str(MINSSPEC+MOWNSPEC,BWIDTH,2)+str(IVATAMT+OVATAMT,BWIDTH,2)
- M = M + str(MOWNDUE,BWIDTH,2)+str(MINSDUE,BWIDTH,2)+str(MINVTOTAL,10,2)
- TL = TL + MLABOURT
- TP = TP + MINSPART+MOWNPART
- TS = TS + MINSSPEC+MOWNSPEC
- TV = TV + IVATAMT+OVATAMT
- TO = TO + MOWNDUE
- TI = TI + MINSDUE
- TT = TT + MINVTOTAL
- do QBPUTL with 1,M
- endif
- skip
- enddo
-
- M = LMARG+space(iif(PDEST="S",8,17))+"Totals"+str(TL,10,2)+str(TP,10,2)+str(TS,BWIDTH,2)+str(TV,BWIDTH,2)
- M = M + str(TO,BWIDTH,2)+str(TI,BWIDTH,2)+str(TT,10,2)
- do QBPUTL with 2,M
-
- do QBPRCTL with [R:Finished "Revenue Report"]
-
- return
-
- ***********************************************************************
-
- procedure REPWIP
- * Work in Progress report
- parameters CGROUP, STARTD, FINISHD
- * Revenue for Customer group between two dates
- private TL, TP, TS, TV, TO, TI, TT
- store 0 to TL, TP, TS, TV, TO, TI, TT
- private M, LMARG
- LMARG = iif(PDEST="S","",space(5))
-
- do QBPUTH with 1,LMARG+REPHD1
- do QBPUTH with 3,LMARG+REPHD3
- M = LMARG+"Invoice D a t e s Labour Total Special V A T Contributions Total"
- do QBPUTH with 5,M
- M = LMARG+"Number In Out Charge Parts Mater'l Owner Ins Co"
- do QBPUTH with 6,M
- do QBPUTH with 7," "
- * 99999 99/99/99 99/99/99 9999.99 9999.99 9999.99 9999.99 9999.99 9999.99 9999.99
-
- do while .not. eof()
- if INVNO<>0 .and. DATEINV=ctod("") .and. REPGROUP(CGROUP)
- INVFILL(.f.)
- do INVTOTAL with .f.
- M = LMARG+str(MINVNO,5)+" "+dtoc(MDATEIN)+" "+dtoc(MDATEOUT)
- M = M + str(MLABOURT,BWIDTH,2)+str(MINSPART+MOWNPART,BWIDTH,2)
- M = M + str(MINSSPEC+MOWNSPEC,SWIDTH,2)+str(IVATAMT+OVATAMT,BWIDTH,2)
- M = M + str(MOWNDUE,SWIDTH,2)+str(MINSDUE,BWIDTH,2)+str(MINVTOTAL,BWIDTH,2)
- TL = TL + MLABOURT
- TP = TP + MINSPART+MOWNPART
- TS = TS + MINSSPEC+MOWNSPEC
- TV = TV + IVATAMT+OVATAMT
- TO = TO + MOWNDUE
- TI = TI + MINSDUE
- TT = TT + MINVTOTAL
- do QBPUTL with 1,M
- endif
- skip
- enddo
-
- M = LMARG+space(17)+"Totals"+str(TL,BWIDTH,2)+str(TP,BWIDTH,2)+str(TS,SWIDTH,2)+str(TV,BWIDTH,2)
- M = M + str(TO,SWIDTH,2)+str(TI,BWIDTH,2)+str(TT,BWIDTH,2)
- do QBPUTL with 2,M
-
- do QBPRCTL with [R:Finished "Current Work"]
-
- return
-
-